\chapter{GNU Regex正则库简介}

\section{GNU Regex正则库}
GNU Regex库是GNU开发，并随glibc一同发布的一个C语言开源库，它提供了3组不同格式的
正则表达式编程用户界面(API函数、结构体、类型定义、宏定义等)：

\begin{enumerate}
  \item GNU特有的用户界面：功能最强，但与其它两组用户界面不兼容
  \item POSIX兼容用户界面：功能较强，保持与POSIX用户界面兼容
  \item BSD兼容用户界面：功能较少，保持与Berkeley UNIX用户界面兼容
\end{enumerate}

\section{使用GNU Regex库}

如使用GCC编译工具链，则可以直接通过\cinline{#include <regex.h>}包含GNU Regex%
头文件后使用GNU Regex库。

由于GNU Regex库提供了GNU、POSIX和BSD三种用户界面，因此，在引入%
\enquote{\cinline{regex.h}}头文件前，可以通过宏定义区分这3个不同的用户界面：

\begin{enumerate}
  \item GNU特有的用户界面：\cinline{#define _GNU_SOURCE}；
  \item POSIX兼容用户界面无需宏定义；
  \item BSD兼容用户界面：\cinline{#define _GNU_SOURCE} 和
      \cinline{#define _REGEX_RE_COMP}。
\end{enumerate}

在构建基于GNU Regex代码时，无需指明特殊的链接参数，如：

\begin{minipage}{0.90\textwidth}
  \begin{shell}
    $ gcc -Wall jobname.c -o jobname
  \end{shell}
\end{minipage}

